
<?php

App::uses('AppController', 'Controller');

/**
 * Recetaspacientes Controller
 *
 * @property Recetaspaciente $Recetaspaciente
 */
class RecetaspacientesController extends AppController {

    public $uses = array('Recetaspaciente', 'Medicamento', 'MedicamentosPaciente', 'Medicamentosprecio','PacientesSeguro','Examenespaciente', 'Consultasexterna', 'Trauma',
        'User', 'Paciente');
    public $layout = 'hospital';
    public $components = array('Fechasconvert');

    public function beforeFilter() {
        parent::beforeFilter();
        //$this->Auth->allow();
    }

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->Recetaspaciente->recursive = 0;
        $this->set('recetaspacientes', $this->paginate());
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function view($id = null) {
        if (!$this->Recetaspaciente->exists($id)) {
            throw new NotFoundException(__('Invalid recetaspaciente'));
        }
        $options = array('conditions' => array('Recetaspaciente.' . $this->Recetaspaciente->primaryKey => $id));
        $this->set('recetaspaciente', $this->Recetaspaciente->find('first', $options));
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Recetaspaciente->create();
            if ($this->Recetaspaciente->save($this->request->data)) {
                $this->flash(__('Recetaspaciente saved.'), array('action' => 'index'));
            } else {
                
            }
        }
        $pacientes = $this->Recetaspaciente->Paciente->find('list');
        $consultasexternas = $this->Recetaspaciente->Consultasexterna->find('list');
        $this->set(compact('pacientes', 'consultasexternas'));
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function edit($id = null) {
        if (!$this->Recetaspaciente->exists($id)) {
            throw new NotFoundException(__('Invalid recetaspaciente'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            if ($this->Recetaspaciente->save($this->request->data)) {
                $this->flash(__('The recetaspaciente has been saved.'), array('action' => 'index'));
            } else {
                
            }
        } else {
            $options = array('conditions' => array('Recetaspaciente.' . $this->Recetaspaciente->primaryKey => $id));
            $this->request->data = $this->Recetaspaciente->find('first', $options);
        }
        $pacientes = $this->Recetaspaciente->Paciente->find('list');
        $consultasexternas = $this->Recetaspaciente->Consultasexterna->find('list');
        $this->set(compact('pacientes', 'consultasexternas'));
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @throws MethodNotAllowedException
     * @param string $id
     * @return void
     */
    public function delete($id = null) {
        $this->Recetaspaciente->id = $id;
        if (!$this->Recetaspaciente->exists()) {
            throw new NotFoundException(__('Invalid recetaspaciente'));
        }
        $this->request->onlyAllow('post', 'delete');
        if ($this->Recetaspaciente->delete()) {
            $this->flash(__('Recetaspaciente deleted'), array('action' => 'index'));
        }
        $this->flash(__('Recetaspaciente was not deleted'), array('action' => 'index'));
        $this->redirect(array('action' => 'index'));
    }

    public function ajaxautocomplete() {
        $this->layout = 'ajax';
        $this->set('posts', $this->Recetaspaciente->find('all', array(
                    'conditions' => array(
                        'Recetaspaciente.medicamento LIKE' => '%' . $this->params['url']['q'] . '%'
                    ),
                    'limit' => $this->params['url']['limit'],
                        //'fields' => array('descod4')
        )));
    }
    public function autocompleta(){
        $this->layout = 'ajax';
        
        $medicamentos = $this->Medicamento->find('all', array(
            'recursive' => 0,
        ));
        
        foreach($medicamentos as $m){
            $dato .= '"';
            $dato .=$m['Medicamento']['id'].' .';
            $dato .= $m['Medicamento']['nombre'].' ';
            if(!empty($m['Medicamento']['porporcion']))
                $dato .=  $m['Medicamento']['porporcion'].' ';
            if(!empty($m['Medidasmedicamento']['sigla']))
                $dato .= $m['Medidasmedicamento']['sigla'].' ';
            if(!empty($m['Presentacionesmedicamento']['nombre']))
                $dato.=$m['Presentacionesmedicamento']['nombre'];   
            $dato .= '",'; 
        }
        //debug($medicamentos);exit;
        $this->set(compact('medicamentos', 'dato'));
    }

    public function registra($idPaciente = null, $idConsultaExterna = null) {
        $this->layout = 'ajax';
        $paciente = $this->Paciente->find('first', array('conditions'=>array('Paciente.id'=>$idPaciente), 'recursive'=>-1));
        
        $medicamentos = $this->Medicamento->find('all', array(
            'order'=>array('Medicamento.nombre ASC'),
            'recursive' => 0,
        ));
       
        $seguro = $this->PacientesSeguro->find('first', array(
                        'conditions'=>array('PacientesSeguro.paciente_id'=>$idPaciente),
                        'order'=>array('PacientesSeguro.id DESC')
                        ));
        
        $datosMedicamentosPaciente = $this->MedicamentosPaciente->find('all', array(
            'recursive' => 0,
            'conditions' => array(
                'MedicamentosPaciente.consultasexterna_id' => $idConsultaExterna,
            ),
            'fields' => array(
                'Medicamento.nombre', 'Medicamento.porporcion', 'Medicamento.presentacionesmedicamento_id', 'Medicamento.medidasmedicamento_id',
                'MedicamentosPaciente.id', 'MedicamentosPaciente.medicamento','MedicamentosPaciente.consultasexterna_id', 'MedicamentosPaciente.precio','MedicamentosPaciente.cantidad', 'MedicamentosPaciente.seguro', 'MedicamentosPaciente.dosis', 'MedicamentosPaciente.observaciones'),
        ));
        
        $recomendaciones = $this->Consultasexterna->find('first', array(
            'conditions' => array('Consultasexterna.id' => $idConsulta),
            'fields' => array('Consultasexterna.recomendaciones')
        ));
        $this->set(compact('paciente','seguro', 'conseguro','medicamentos', 'idPaciente', 'idConsultaExterna', 'datosMedicamentosPaciente', 'recomendaciones'));
    }

    public function ajaxregistra() {
        $this->layout = 'ajax';
        //debug($this->request->data);die;
        if (!empty($this->request->data)) {
            debug($this->request->data);exit;
            $idConsulta = $this->request->data['Recetaspaciente']['consultasexterna_id'];
            $idPaciente = $this->request->data['Recetaspaciente']['paciente_id'];
            $this->MedicamentosPaciente->create();
            if ($this->MedicamentosPaciente->save($this->request->data['Recetaspaciente'])) {
                //echo 'guardo';
                $datosMedicamentosPaciente = $this->MedicamentosPaciente->find('all', array(
                    'recursive' => 0,
                    'conditions' => array(
                        'MedicamentosPaciente.paciente_id' => $idPaciente,
                        'MedicamentosPaciente.consultasexterna_id' => $idConsulta,
                    )
                ));
                $this->set(compact('datosMedicamentosPaciente'));
            }
            //debug($this->request->data);die;
        }
    }

    public function ajaxmuestra() {
        $this->layout = 'ajax';
        if (!empty($this->request->data)) {
            //debug($this->request->data);exit;
            if (!empty($this->request->data['Consultasexterna']['recomendaciones'])) {
                $this->Consultasexterna->save($this->request->data['Consultasexterna']);
            }
            if (!empty($this->request->data['MedicamentosPaciente']['cantidad']) && !empty($this->request->data['MedicamentosPaciente']['dosis'])) {
                $idConsulta = $this->request->data['MedicamentosPaciente']['consultasexterna_id'];
                $idPaciente = $this->request->data['MedicamentosPaciente']['paciente_id'];
                $this->request->data['MedicamentosPaciente']['user_id'] = $this->Session->read("Auth.User.id");
               
                $this->MedicamentosPaciente->create();
                //debug($this->request->data);exit;
                if($this->request->data['MedicamentosPaciente']['seguro']=='SI'){
                    
                    $datoseguro = $this->PacientesSeguro->find('first', array(
                        'conditions'=>array('PacientesSeguro.paciente_id'=>$idPaciente),
                        'order'=>array('PacientesSeguro.id DESC')
                        ));
                        //debug($datoseguro);die;
                    if(!empty($datoseguro)){
                          $this->request->data['MedicamentosPaciente']['seguro_id'] = $datoseguro['PacientesSeguro']['seguro_id'];
                          $this->request->data['MedicamentosPaciente']['colegio_id'] = $datoseguro['PacientesSeguro']['colegio_id'];
                          $this->request->data['MedicamentosPaciente']['curso'] = $datoseguro['PacientesSeguro']['curso'];
                          $idMedicamento = $this->request->data['MedicamentosPaciente']['medicamento_id'];
                          $idSeguro = $this->request->data['MedicamentosPaciente']['seguro_id'];
                          //debug($idMedicamento);
                          //debug($idSeguro);
//                          $precio = $this->Medicamentosprecio->find('first', array(
//                            'conditions'=>array(
//                                'Medicamentosprecio.medicamento_id'=>$this->request->data['MedicamentosPaciente']['medicamento_id'],
//                                'Medicamentosprecio.seguro_id'=>$this->request->data['MedicamentosPaciente']['seguro_id']
//                            )                              
//                        ));
                          //debug($precio);die;
                    }
                }
//                }else{
//                   $precio = $this->Medicamentosprecio->find('first', array(
//                            'conditions'=>array(
//                            'Medicamentosprecio.medicamento_id'=>$this->request->data['MedicamentosPaciente']['medicamento_id'],
//                            //'Medicamentosprecio.seguro_id'=>$this->request->data['MedicamentosPaciente']['seguro_id']
//                            )
//                        )); 
//                }
                // $this->request->data['MedicamentosPaciente']['precio']= $precio['Medicamentosprecio']['precio'];
                 //debug($this->request->data['MedicamentosPaciente']);exit;
                if (!($this->MedicamentosPaciente->save($this->request->data['MedicamentosPaciente']))) {
                    $this->Session->setFlash('error al guardar los datos por favor registre nuevamente', 'error');
                    $this->redirect(array('controller' => 'pacientes', 'action' => 'verestadopaciente', $idConsulta, 'receta'));
                }
            }
            $datosMedicamentosPaciente = $this->MedicamentosPaciente->find('all', array(
                'recursive' => 0,
                'conditions' => array(
                    'MedicamentosPaciente.paciente_id' => $idPaciente,
                    'MedicamentosPaciente.consultasexterna_id' => $idConsulta,
                )
            ));
            //debug($datosMedicamentosPaciente);exit;
            $medicamentos = $this->Medicamento->find('all', array(
                'recursive' => 0,
            ));
            $recomendaciones = $this->Consultasexterna->find('first', array(
                'conditions' => array('Consultasexterna.id' => $idConsulta),
                'fields' => array('Consultasexterna.recomendaciones')
            ));
            $this->set(compact('datosMedicamentosPaciente', 'medicamentos', 'recomendaciones', 'idConsulta'));
        }
    }

    public function imprimir($idConsultaExterna = null) {
        //$this->layout = "imprimir";

        $receta = $this->MedicamentosPaciente->find('all', array(
            'conditions' => array(
                'MedicamentosPaciente.consultasexterna_id' => $idConsultaExterna,
        )));

        $this->set(compact('receta', 'idConsultaExterna'));
    }

    public function eliminareceta($id = null, $idconsulta = null) {
        if (!$id) {
            $this->Session->setFlash('id Invalida para borrar', 'error');
            $this->redirect(array('controller' => 'Pacientes', 'action' => 'verestadopaciente', $idconsulta, 'receta'));
        }
        //debug($id);exit;
        if ($this->MedicamentosPaciente->delete($id)) {
            $this->Session->setFlash('El medicamento  fue eliminado de la receta', 'bueno');
            $this->redirect(array('controller' => 'Pacientes', 'action' => 'verestadopaciente', $idconsulta, 'receta'));
        }
    }
    public function ajaxprecio($idMedicamento=null, $seguro = null){
        $this->layout='ajax';
        $precio = $this->Medicamentosprecio->find('first', 
                array('conditions'=>array(
            'Medicamentosprecio.medicamento_id'=>$idMedicamento, 
            //'Medicamentosprecio.seguro_id'=>$seguro
                ), 
                    'recursive'=>-1));
        $this->set(compact('precio'));
        //debug($precio);exit;
    }
    public function ajaxeditaprecio($precionuevo=null, $idMedicamento=null, $seguro = null){
        $this->layout='ajax';
        $precio_anterior = $this->Medicamentosprecio->find('first', array(
            'conditions'=>array(
                'Medicamentosprecio.medicamento_id'=>$idMedicamento, 
                //'Medicamentosprecio.seguro_id'=>$seguro
                ),
            'recursive'=>-1));
        //debug($precio_anterior);exit;
        $data= array('id'=>$precio_anterior['Medicamentosprecio']['id'], 'precio'=>$precionuevo);
        $this->Medicamentosprecio->save($data);
        $this->set(compact('precionuevo'));
    }
}
